AWS IAMロールの ExternalId が大文字・小文字を区別するのか試してみた
AWS IAMロールでは、ExternalIdが設定できます。
- AWS リソースへのアクセス権を第三者に付与するときに外部 ID を使用する方法 - AWS Identity and Access Management
- IAM ロールの信頼ポリシーで設定する外部 ID(sts:ExternalId) について | DevelopersIO
ExternalIdで利用できる文字について、大文字・小文字を区別するのか気になったので、試してみました。
ExternalId の値は、2~1,224 文字で構成されている必要があります。この値は、空白のない英数字にする必要があります。次の記号を含めることもできます。プラス記号 (+)、等号 (=)、カンマ (,)、ピリオド (.)、アットマーク (@)、コロン (:)、スラッシュ (/)、およびハイフン (-)。
https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/reference_policies_iam-condition-keys.html#condition-keys-sts
おすすめの方
- Assume Roleする際のExternalIdが大文字・小文字を区別するのか知りたい方
IAMロールを作成する
「AmazonS3ReadOnlyAccess」を持つIAMロールを作成しました。
信頼関係は下記となっており、「大文字・小文字が混在するExternalId」を設定しています。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::012345678901:root" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "sts:ExternalId": "I-am-3rd-Party" } } } ] }
大文字・小文字が一致するExternalIdでAssume Roleする
問題なくAssume Roleが成功しました。
$ aws sts assume-role \ --role-arn arn:aws:iam::012345678901:role/external-id-test-blog-role \ --role-session-name test-blog-aaa-session \ --external-id I-am-3rd-Party { "Credentials": { ... }, "AssumedRoleUser": { ... } }
大文字・小文字が異なるExternalIdでAssume Roleする(すべて小文字)
Assume Roleができませんでした。
$ aws sts assume-role \ --role-arn arn:aws:iam::012345678901:role/external-id-test-blog-role \ --role-session-name test-blog-bbb-session \ --external-id i-am-3rd-party An error occurred (AccessDenied) when calling the AssumeRole operation: User: arn:aws:sts::012345678901:assumed-role/xxx/botocore-session-1703070136 is not authorized to perform: sts:AssumeRole on resource: arn:aws:iam::012345678901:role/external-id-test-blog-role
大文字・小文字が異なるExternalIdでAssume Roleする(すべて大文字)
同じく、Assume Roleができませんでした。
$ aws sts assume-role \ --role-arn arn:aws:iam::012345678901:role/external-id-test-blog-role \ --role-session-name test-blog-ccc-session \ --external-id I-AM-3RD-PARTY An error occurred (AccessDenied) when calling the AssumeRole operation: User: arn:aws:sts::012345678901:assumed-role/xxx/botocore-session-1703070136 is not authorized to perform: sts:AssumeRole on resource: arn:aws:iam::012345678901:role/external-id-test-blog-role
さいごに
ExternalIdの大文字・小文字は区別されました。